package clases.academico;

import CapaDatos.DataSource;
import CapaDatos.Sql;
import clases.general.Persona;
import clases.matriculacion.Academico;
import java.awt.Image;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;

/**
 *
 * @author Jose Daniel
 */
public class Alumno extends Persona {
    private String cedulaAlumno;
    private String cedulaactualizar;
    private String lugarnacimiento;
    private String fechanacimiento;
    private boolean estado;
    private String genero;
    private String correo;
    private Image foto;
    private String sql;
    private final DataSource dt;
    public Competencia competencia;
    public Academico academico;
    public Medico medico; 

    public Alumno() {
      dt = new DataSource();
      competencia= new Competencia();
      academico=new Academico();
      medico=new Medico();
    }

    public String getCedulaAlumno() {
        return cedulaAlumno;
    }

    public void setCedulaAlumno(String cedulaAlumno) {
        this.cedulaAlumno = cedulaAlumno;
    }

    public String getCedulaactualizar() {
        return cedulaactualizar;
    }

    public boolean isEstado() {
        return estado;
    }

    public void setEstado(boolean estado) {
        this.estado = estado;
    }

    public String getGenero() {
        return genero;
    }

    public void setGenero(String genero) {
        this.genero = genero;
    }

    public String getCorreo() {
        return correo;
    }

    public void setCorreo(String correo) {
        this.correo = correo;
    }

    public Image getFoto() {
        return foto;
    }

    public void setFoto(Image foto) {
        this.foto = foto;
    }
    
    
    public String getLugarnacimiento() {
        return lugarnacimiento;
    }

    public void setLugarnacimiento(String lugarnacimiento) {
        this.lugarnacimiento = lugarnacimiento;
    }

    public String getFechanacimiento() {
        return fechanacimiento;
    }

    public void setFechanacimiento(String fechanacimiento) {
        this.fechanacimiento = fechanacimiento;
    }

  
    public void guardarAlumno() {
        this.guardarPersona();
        this.desigacionCedula();
        sql="INSERT INTO ALUMNO VALUES('"+this.cedulaAlumno 
                + "','" + lugarnacimiento + "','" + fechanacimiento + "', "
                + "'"+genero+"', '"+correo+"', "+true+")";
        Sql.insertar(sql);
      
    }

    
    public void listarAlumnoenJList(JList jls, String cedulaFamiliar) {
//        JLista ls = new JLista(jls);
//        Sql.getConsulta("SELECT (SELECT PERSONA.APELLIDO||' '||PERSONA.NOMBRE FROM PERSONA WHERE PERSONA.IDPERSONA=ALUMNO.IDPERSONA)AS ALUMNO\n"
//                + "FROM FAMILIARALUMNO\n"
//                + "JOIN ALUMNO ON FAMILIARALUMNO.IDALUMNO=ALUMNO.IDALUMNO\n"
//                + "JOIN FAMILIAR ON FAMILIAR.IDFAMILIAR=FAMILIARALUMNO.IDFAMILIAR \n"
//                + "JOIN PERSONA ON PERSONA.IDPERSONA=FAMILIAR.IDPERSONA AND PERSONA.CEDULARUC='" + cedulaFamiliar + "' ", dt);
//        while (dt.next()) {
//            ls.agregarItem(dt.getString(1));
//        }
    }

    public void FiltrarAlumnoenJList(JList jls, String apellido) {

//        JLista ls = new JLista(jls);
//        Sql.getConsulta("SELECT CONCAT (PERSONA.APELLIDO,' ',PERSONA.NOMBRE) FROM MATRICULA JOIN PERIODOMATRICULA ON MATRICULA.IDPERIODOMATRICULA=PERIODOMATRICULA.IDPERIODOMATRICULA AND PERIODOMATRICULA.ESTADO='TRUE'\n"
//                + "JOIN ALUMNO ON MATRICULA.IDALUMNO=ALUMNO.IDALUMNO JOIN PERSONA ON ALUMNO.IDPERSONA=PERSONA.IDPERSONA\n"
//                + "WHERE(PERSONA.APELLIDO LIKE upper('" + apellido + "%')) ", dt);
//        while (dt.next()) {
//            ls.agregarItem(dt.getString(1));
//        }
    }

    public void getDeudasPensiones(JComboBox cbo, String nombre) {
        cbo.removeAllItems();
        Sql.getConsulta("SELECT CONCEPTO.CONCEPTO\n"
                + "FROM CONCEPTO WHERE CONCEPTO.IDCONCEPTO NOT IN(\n"
                + "SELECT HISTORIALPAGO.IDCONCEPTO FROM HISTORIALPAGO JOIN DETALLEFACTURA ON DETALLEFACTURA.IDCONCEPTO=HISTORIALPAGO.IDCONCEPTO \n"
                + "AND DETALLEFACTURA.IDFACTURA=HISTORIALPAGO.IDFACTURA\n"
                + "JOIN MATRICULA ON MATRICULA.IDMATRICULA=HISTORIALPAGO.IDMATRICULA\n"
                + "JOIN ALUMNO ON MATRICULA.IDALUMNO=ALUMNO.IDALUMNO\n"
                + "JOIN PERSONA ON ALUMNO.IDPERSONA=PERSONA.IDPERSONA AND PERSONA.APELLIDO||' '||PERSONA.NOMBRE='" + nombre + "')", dt);
        while (dt.next()) {
            cbo.addItem(dt.getString(1));
        }

    }
    
    public void actualizarAlumno(){
    this.actualizarPersona();
    this.desigacionCedula();
    sql="UPDATE ALUMNO SET CEDULARUC='"+this.cedulaAlumno+"', "
            + "LUGARNACIMIENTO='"+this.lugarnacimiento+"', "
            + "FECHANACIMIENTO='"+this.fechanacimiento+"', "
            + "GENERO='"+this.genero+"', CORREO='"+this.correo+"' "
            + "WHERE CEDULARUC='"+this.cedulaactualizar+"'";
    Sql.actualizar(sql);
    
    }
    
    public boolean ExistenciaAlumno(String cedula){
    this.desigacionCedula();
    sql="SELECT * FROM ALUMNO JOIN PERSONA "
            + "ON PERSONA.CEDULARUC=ALUMNO.CEDULARUC "
            + "WHERE ALUMNO.CEDULARUC='"+cedula+"'";   
       return Sql.isExiste(sql);
     }
    public boolean ExistenciaAlumnoActualizar(String cedula){
        this.desigacionCedula();
        if(!cedula.equals(this.getCedulaRuc())){
    sql="SELECT * FROM ALUMNO JOIN PERSONA "
            + "ON PERSONA.CEDULARUC=ALUMNO.CEDULARUC "
            + "WHERE ALUMNO.CEDULARUC='"+cedula+"' AND ALUMNO.CEDULARUC!='"+this.cedulaactualizar+"'";   
       return Sql.isExiste(sql);
     }
        else return false;
    }
    
    public String SqlGeneralAlumno(){
     sql="SELECT ALUMNO.CEDULARUC, CONCAT(APELLIDO,' ',NOMBRE), FECHANACIMIENTO, TELEFONO, DIRECCION "
             + "FROM ALUMNO JOIN PERSONA "
             + "ON PERSONA.CEDULARUC=ALUMNO.CEDULARUC ";
             
     return sql;
    }
    
    public String SqlNombre(String nombre){
     sql="SELECT ALUMNO.CEDULARUC, CONCAT(APELLIDO,' ',NOMBRE), FECHANACIMIENTO, TELEFONO, DIRECCION "
             + "FROM ALUMNO JOIN PERSONA "
             + "ON PERSONA.CEDULARUC=ALUMNO.CEDULARUC WHERE NOMBRE LIKE '"+nombre+"%'";
            
     return sql;
    }
    
    public String SqlApellido(String apellido){
     sql="SELECT ALUMNO.CEDULARUC, CONCAT(APELLIDO,' ',NOMBRE), FECHANACIMIENTO, TELEFONO, DIRECCION "
             + "FROM ALUMNO JOIN PERSONA "
             + "ON PERSONA.CEDULARUC=ALUMNO.CEDULARUC WHERE APELLIDO LIKE '"+apellido+"%'";
            
     return sql;
    }
    
        
    public String SqlFechaNacimiento(String fecha){
     sql="SELECT ALUMNO.CEDULARUC, CONCAT(APELLIDO,' ',NOMBRE), FECHANACIMIENTO, TELEFONO, DIRECCION "
             + "FROM ALUMNO JOIN PERSONA "
             + "ON PERSONA.CEDULARUC=ALUMNO.CEDULARUC WHERE FECHANACIMIENTO = '"+fecha+"'";
           
     return sql;
    }
    
     public String SqlCedulaAlumno(String cedula){
     sql="SELECT ALUMNO.CEDULARUC, APELLIDO, NOMBRE, FECHANACIMIENTO, TELEFONO, DIRECCION "
             + "FROM ALUMNO JOIN PERSONA "
             + "ON PERSONA.CEDULARUC=ALUMNO.CEDULARUC WHERE ALUMNO.CEDULARUC LIKE ('"+cedula+"%')";
           
     return sql;
    }
    
    
   public void ConsultaAlumno(DefaultTableModel modelo, JTable tabla, String sql, JLabel Lpaginatotal, JLabel Lpagina, int pagina){
    modelo = new DefaultTableModel() {
       @Override
       public boolean isCellEditable(int fila, int columna) {
          return false; 
       }
    };
    
     tabla.setModel(modelo);
     modelo.addColumn("CEDULA");
      modelo.addColumn("ALUMNO");
      modelo.addColumn("FECHA NACIMIENTO");
      modelo.addColumn("TELEFONO");
      modelo.addColumn("DIRECCION");
         
      TableColumn  columna= new TableColumn();
      columna=tabla.getColumnModel().getColumn(0);
      columna.setPreferredWidth(20);
      columna=tabla.getColumnModel().getColumn(1);
      columna.setPreferredWidth(150);
      columna=tabla.getColumnModel().getColumn(2);
      columna.setPreferredWidth(50);
      columna=tabla.getColumnModel().getColumn(3);
      columna.setPreferredWidth(20);
      columna=tabla.getColumnModel().getColumn(4);
      columna.setPreferredWidth(150);
    sql=objPaginacion.getPaginacion(sql, pagina,25);
    Sql.getConsulta(sql, dt);
    
    String []fila;
  
    while(dt.next()){
    fila=new String[5];
    fila[0]=dt.getString(1);
    fila[1]=dt.getString(2);
    fila[2]=dt.getString(3);
    fila[3]=dt.getString(4);
    fila[4]=dt.getString(5);
    
     
    modelo.addRow(fila);
  
      }
    
    objPaginacion.actualPagina(Lpagina);
        objPaginacion.totalPaginas(Lpaginatotal);
        tabla.getSelectionModel().setSelectionInterval(0, 0);
    }
    
   private void desigacionCedula(){
    this.cedulaactualizar=this.getCedulaRuc();
    this.cedulaAlumno=this.cedulaactualizar;
    this.competencia.setcedulaCompetencia(this.cedulaactualizar);
    this.academico.setCedulaAcademico(this.cedulaactualizar);
    this.medico.setCedulaMedico(this.cedulaactualizar);
    }
   
   public void llenardatosAlumno(){
    this.desigacionCedula();
    sql="SELECT * FROM ALUMNO WHERE CEDULARUC='"+this.getCedulaRuc()+"'";
    Sql.getConsulta(sql, dt);
    while(dt.next()){
        this.cedulaactualizar=dt.getString(1);
        this.lugarnacimiento=dt.getString(2);
        this.fechanacimiento=dt.getString(3);
        this.genero=dt.getString(4);
        this.correo=dt.getString(5);
      
     //   this.foto=dt.getInt(7);
    }
    }   
}
